package com.niit.session17;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class HashSetDemo {
	public static void main(String[] args) {
//		实例化一个HashSet
//		泛型用于指定这个HashSet要存储的数据的数据类型
//		一般会使用HashSet的父接口来接收HashSet的对象，实现多态
		Set<String> hashSet = new HashSet<String>();
//		往HashSet里添加元素，
		hashSet.add("apple");
		hashSet.add("pear");
//		Set接口所有的子类都具备去重的功能，如果添加重复的元素，只会剩下一个
		hashSet.add("banana");
		hashSet.add("banana");
		hashSet.add("banana");
		hashSet.add("banana");
//		注意，添加的元素的数据类型，要和HashSet定义时的类型一样
//		hashSet.add(123);
		System.out.println(hashSet);
		
//		使用迭代器遍历集合：
		Iterator<String> iterator = hashSet.iterator();
		while (iterator.hasNext()) {
			 	System.out.println(iterator.next());
		}
//		使用增强for循环遍历HashSet
		for (String string : hashSet) {
			System.out.println(string);
		}
		
		
		System.out.println("集合的长度："+hashSet.size());
//		移除指定的元素
		hashSet.remove("pear");
		System.out.println(hashSet);
//		清空集合里的内容
		hashSet.clear();
		System.out.println(hashSet);
		
//		集合也经常用来装一些自己定义的类的对象
		HashSet<Student> students = new HashSet<Student>();
		students.add(new Student("张三",18));
		students.add(new Student("李四",21));
		students.add(new Student("王五",20));
		System.out.println(students);

		
	}

}
